

#ifndef __COMM_MSG_H__
#define __COMM_MSG_H__

enum ZHISHANCMD_TYPE_ENUM {
    ZHISHANCMD_TYPE_CAR_CTRL            = 8,
    ZHISHANCMD_TYPE_USED9               = 9,        /* 已经不再使用 */
    ZHISHANCMD_TYPE_USED10              = 10,       /* 已经不再使用 */
    ZHISHANCMD_TYPE_USED15              = 15,       /* 已经不再使用 */
    ZHISHANCMD_TYPE_USED21              = 21,       /* 已经不再使用 */
    ZHISHANCMD_TYPE_USED88              = 88,       /* 已经不再使用 */
};

#define CAR_CTRL_CMD_ENUM_NAME_PREFIX_LEN   13          /* 下面定义的消息名称的前公共部分(CAR_CTRL_CMD_)长度，如果该部分修改，则本长度要同步修改 */

enum CAR_CTRL_CMD_ENUM {
    CAR_CTRL_CMD_TELE_CTRL_CLEAN_CHANGE                 = 1,        /* 3号车，清扫/不清扫，按动后强制手动控制 */
    CAR_CTRL_CMD_TELE_CTRL_CLEAN_PAUSE_STOP             = 2,        /* 3号车，暂停/停止 */
    CAR_CTRL_CMD_TELE_CTRL_CLEAN_DEACT                  = 3,        /* 3号车，清除手动操作，恢复自动控制 */

    CAR_CTRL_CMD_COMB_KEY_BASE                          = 4,        /* 组合键 */
    CAR_CTRL_CMD_COMB_KEY_RECORD_LOC_BAG_START          = 5,        /* 结合组合键 录制定位数据集 */
    CAR_CTRL_CMD_COMB_KEY_RECORD_LOC_BAG_STOP           = 6,        /* 结合组合键 停止录制定位数据集 */
    CAR_CTRL_CMD_COMB_KEY_RECORD_PCPT_BAG_START         = 7,        /* 结合组合键 录制感知数据集 */
    CAR_CTRL_CMD_COMB_KEY_RECORD_PCPT_BAG_STOP          = 8,        /* 结合组合键 停止录制感知数据集 */
    CAR_CTRL_CMD_COMB_KEY_RECORD_CLBT_BAG_START         = 9,        /* 结合组合键 录制雷达标定数据集 */
    CAR_CTRL_CMD_COMB_KEY_RECORD_CLBT_BAG_STOP          = 10,       /* 结合组合键 停止录制雷达标定数据集 */

    CAR_CTRL_CMD_START_SAVE_ROUTE                       = 11,       /* 开始保存路径 */
    CAR_CTRL_CMD_STOP_SAVE_ROUTE                        = 12,       /* 停止保存路径 */

    CAR_CTRL_CMD_COMB_KEY_RECORD_NAV_BAG_START          = 13,       /* 结合组合键 开始录制导航数据集 */
    CAR_CTRL_CMD_COMB_KEY_RECORD_NAV_BAG_STOP           = 14,       /* 结合组合键 停止录制导航数据集 */

    CAR_CTRL_CMD_CLEAR_BLIND_OBST                       = 15,       /* 清除盲区障碍物 */
    CAR_CTRL_CMD_VISION_SAVE_IMAGE_ONCE                 = 16,       /* 视觉保存图像一次，以供分析 */

    CAR_CTRL_CMD_CLEAR_OBST                             = 17,       /* 清除障碍物一秒钟 */
    CAR_CTRL_CMD_CLEAR_LIMIT_LINE                       = 18,       /* 清除限制线一秒钟 */
    CAR_CTRL_CMD_CLEAR_OBST_AND_LIMIT_LINE              = 19,       /* 清除障碍物和限制线一秒钟 */

    CAR_CTRL_CMD_STOP_MOVE                              = 20,       /* 强制停止 */
    CAR_CTRL_CMD_CANCEL_STOP_MOVE                       = 21,       /* 取消强制停止 */

    CAR_CTRL_CMD_SUSPEND_AUTO_NAV                       = 22,       /* 挂起自动任务 */
    CAT_CTRL_CMD_RESUME_AUTO_NAV                        = 23,       /* 恢复自动任务 */

    CAR_CTRL_CMD_NOT_USED_24                            = 24,       /* 暂未使用 */
    CAR_CTRL_CMD_NOT_USED_25                            = 25,       /* 暂未使用 */
    CAR_CTRL_CMD_NOT_USED_26                            = 26,       /* 暂未使用 */

    CAR_CTRL_CMD_START_RECORD_TOPIC_BAG                 = 27,       /* 开始录制话题数据包 */
    CAR_CTRL_CMD_STOP_RECORD_TOPIC_BAG                  = 28,       /* 停止录制话题数据包 */

    /************************ 以上为手机工具显示的按钮 ************************/
    /************************    以上为内部控制命令    ************************/

    CAR_CTRL_CMD_CHANGE_DSP_STATIS_SHOW_SW              = 51,       /* 改变DSP统计功能开关 */
    CAR_CTRL_CMD_CHANGE_DSP_NRT_RPT_SHOW_SW             = 52,       /* 改变DSP非实时状态上报信息打印开关 */
    CAR_CTRL_CMD_CHANGE_RPT_MMIS_MSG_SHOW_SW            = 54,       /* 改变打印上报人机消息消息 */
    CAR_CTRL_CMD_OUTPUT_VEL_PLAN_INFO_ONCE              = 56,       /* 输出一次速度规划的相关信息 */

    CAR_CTRL_CMD_DSP_ALL_DBG_SW_STATE                   = 100,      /* 打印所有调试开关状态 */

    CAR_CTRL_CMD_BUTT                                               /* 放到最后面 */
};

/**************************************************************************************
功能描述: 整机工作状态，定义详见<<人机-行走>>接口文档
修改记录:
**************************************************************************************/
enum UPSERIAL_WORK_ROBOT_STATUS_ENUM {
    UPSERIAL_WORK_ROBOT_STATUS_IDLE         = 99,               /* 空闲状态 */
    UPSERIAL_WORK_ROBOT_STATUS_CLEAN        = 101,              /* 清扫状态 */
    UPSERIAL_WORK_ROBOT_STATUS_PATROL       = 102,              /* 巡逻状态 */
    UPSERIAL_WORK_ROBOT_STATUS_SUSPEND      = 103               /* 暂停状态，指暂停清扫或者巡逻的状态 */
};

/**************************************************************************************
功能描述: 机器人导航状态，定义详见<<人机-行走>>接口文档
          注意: 本状态与ROS反馈的导航状态不一致
修改记录:
**************************************************************************************/
enum UPSERIAL_WORK_NAV_STATUS_ENUM {
    UPSERIAL_WORK_NAV_STATUS_IDEL           = 0,                /* 是否增加该空闲状态 */
    UPSERIAL_WORK_NAV_STATUS_ACTIVE         = 1,                /* 任务激活，表示正在正常导航 */
    UPSERIAL_WORK_NAV_STATUS_CANCEL         = 2,                /* 任务取消 */
    UPSERIAL_WORK_NAV_STATUS_SUCC           = 3,                /* 任务完成 */
    UPSERIAL_WORK_NAV_STATUS_ABORTED        = 4,                /* 任务终止 */
};

/**************************************************************************************
功能描述: 地图节点状态
修改记录:
**************************************************************************************/
typedef enum {
    /* 异常定位状态值小于0 */
    MAP_NODE_STATE_ABNORMAL                = -2,       /* 异常 */
    MAP_NODE_STATE_IDLE                    = -1,       /* 空闲 */
    /* 正常定位状态值大于0 */
    MAP_NODE_STATE_NAVIGATE_NORMAL         = 0,        /* 正常导航状态 */
    MAP_NODE_STATE_NAVIGATE_CHANGING_MAP   = 1,        /* 正在切换导航地图 */
    MAP_NODE_STATE_GMAPPING_NORMAL         = 2,        /* 正常建图状态 */
    MAP_NODE_STATE_GMAPPING_CREATING_MAP   = 3,        /* 正在建立新地图 */
} MAP_NODE_STATE_ENUM;

#endif

